
public class DecisionTree {
	
	
	/**
	 *  @author Galina Bulgakova
	 *  @author Peter Weirich
	 *
	 * Die Klasse @DecisionTree generiert aus den Daten eines Arrays ein Eintscheidungsbaum
	 * und gibe diesen als eine Zeichenkette aus.
	 * 
	 */
	
	private static String[][] inputTable = new String[][]{
		{"Age"     ,"Young","Old","Medium","Medium","Old","Young","Medium","Medium"},
		{"Soccer"  ,"No"   ,"No" ,"No"    ,"No"    ,"No" ,"Yes"  ,"Yes"   ,"Yes"},
		{"Climbing","Yes"  ,"Yes","Yes"   ,"Yes"   ,"No" ,"Yes"  ,"No"    ,"Yes"},
	 };
	
	private static String[] targetAttr = new String[]
		{"Country","Austria","Austria","Austria","Austria","Elsewhere","Elsewhere","Elsewhere","Elsewhere"};
	
	public static void main(String[] args) {
		
		
		// Die Eingabedaten fuer die Erzeugung des Entscheidungsbaumes festlegen. 
		// Zum Test werden @inputTable und @targetAttr benutzt.	
		String[][] aInputData = inputTable;
		String[] aTargetData = targetAttr;
		double classEntropy=2; //waehele default-Wert fuer die Klassifikator-Entropy groesser 1, da der hoechste Entropy-Wert 1 ist
		
		//Erzeugung des Objekts der Klasse ID3Algorithm
		ID3Algorithm  id3 = new ID3Algorithm(); 
		
		//Die Berechnung und die Ausgabe des Entscheidungsbaumes durchfueren,
		//wobei der Funktion @getDecisionTree die Lerndaten und die Daten fuer die Klassifikation eubergeben werden.
		System.out.println( id3.getDecisionTree(aInputData, aTargetData, classEntropy) ); 

	}
}
